/*自己写的，只通过了一个测试*/
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
int n, p, x, y, z;
int a[100];
int main()
{
	cin >> n >> p;
	for (int i = 1; i <= n; i++) // 初始成绩
	{
		cin >> a[i];
	}
	for (int i = 1; i <= p; i++) // 给x到y个学生每个人增加z分
	{
		cin >> x >> y >> z;
		for (int j = x; j <= y; j++)
		{
			a[j] += z;
		}
	}
	sort(a, a + n + 1);//注意这里的下标从1开始，所以要n+1

	cout << a[1];
	return 0;
}
/*
参考答案
#include <bits/stdc++.h>
using namespace std;
const int N=5e6+10;
int n, p, a[N],sub[N],x, y, z,ans=0x3f3f3f3f;

int main()
{
	cin >> n >> p;
	for (int i = 1; i <= n; i++) //读入学生成绩，并计算相邻成绩之间的差值，存储在sub数组中
	{
		cin >> a[i];
        sub[i]=a[i]-a[i-1];
	}
    while(p--)//对学生成绩进行相应的增减
    {
        cin >> x >> y >> z;
        sub[x]+=z;
        sub[y+1]-=z;
    }
    for(int i=1;i<=n;i++)//更新学生成绩，找出最小成绩
    {
        a[i]=a[i-1]+sub[i];
        ans=min(ans,a[i]);
    }
	
	cout <<ans;
	return 0;
}
*/